package com.github.ki4so.sso.api;

import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import com.alibaba.dubbo.rpc.protocol.rest.support.ContentType;
import com.github.ki4so.sso.dto.CredentialDto;
import com.github.ki4so.sso.dto.RegisterDto;
import com.github.ki4so.sso.dto.SendSmsDto;
import com.github.ki4so.sso.dto.UserInfo;

/**
 * 单点登录统一接口
 * @author TR1
 *
 */
@Path("user")
@Consumes({ MediaType.TEXT_XML, MediaType.APPLICATION_JSON })
@Produces({ ContentType.TEXT_XML_UTF_8, ContentType.APPLICATION_JSON_UTF_8})
public interface SSOService {
	
	public static final int INFOTYPE_ID = 1;
	public static final int INFOTYPE_NAME = 2;
	public static final int INFOTYPE_PHONE = 3;
	public static final int INFOTYPE_MAIL = 4;
	public static final int LOGINTYPE_SMS = 1;
	public static final int LOGINTYPE_PASS = 2;

	public static final String PLATFORM_WEB = "1001";
	
	public static final String SMS_TPL_FROM_REG = "reg";
	public static final String SMS_TPL_FROM_FINDPASS="findpass";

	/**
	 * sso统一登录接口
	 * @param dto 统一登录传输对象
	 * @return sso user对象
	 */
	@POST
	@Path("/login")
	UserInfo login(CredentialDto dto);

	/**
	 * sso统一注册接口
	 * @param dto 统一注册传输对象
	 * @return 
	 */
	@POST
	@Path("/register")
	UserInfo Register(RegisterDto dto);

	/**
	 * 发送短信验证码
	 * @param mobile
	 *            需要接收验证码的手机
	 * @param from
	 *            发送来源,用于日志和确定发送模板,需要系统进行分配后才能使用
	 * @param type
	 *            类型0-仅通知不需验证，1--需验证
	 * @param isValMobile
	 *            是否验证手机号码已经在系统注册过
	 * @return
	 */
	@POST
	@Path("/sendSmsCode")
	String sendSmsCode(SendSmsDto dto);
	
}